const Base = require('./base.js');
const Mock = require('mockjs');


module.exports = class extends Base {
  indexAction() {
    return this.display();
  }


  //模版文件index_hello.html
  //http://127.0.0.1:8306/index/hello
  async helloAction() {

    let schoolList = await this.model('school').page(1, 10).countSelect();
    think.logger.debug(schoolList);

    //假设数据库中存在一条记录
    // let school = await this.model('school').find({ 'school_code': '12046' })
    let school = await this.model('school').where({ 'school_code': '12046' }).find()
    //将变量传递个模版文件
    this.assign('school', school)
    return this.display();
  }


  //增加数据，使用POST请求
  //http://127.0.0.1:8306/index/add
  async addAction() {
    if (this.isPost) {
      // {
      //   "school_code": "12046",
      //   "title": "广州番禺职业技术学院"
      // }
      const data = this.post();
      delete data.id;
      think.logger.debug(data);
      let ret = await this.model('school').where({ 'school_code': '12046' }).thenAdd(data);
      think.logger.debug(ret);
      if (ret.type === 'exist') {
        await this.model('school').where({ 'school_code': '12046' }).update(data);
      }

      let school = await this.model('school').where({ 'school_code': '12046' }).find()
      this.success(school)
    }
  }


  async mockAction() {

    if (this.isPost) {
      //生成模拟数据
      let mockOption = {
        'data|7': [
          {
            //'id': '@increment()',
            'school_code': '12046', //学校代码
            'title|1': ['中山大学', '北京大学', '清华大学', '广州大学', '华南理工大学', '国防科技大学', '广州番禺职业技术学院'], //学校名称
            'type|1': ['本科', '高职高专', '一般大专', '中专'], //学校类型
            'city': '@city(true)', //学校所在城市
            'address': '@county(true)', //学校地址
            'cover_image_id': 1,
            'cover_image': 'http://via.placeholder.com/200x150', //公司LOGO
            'certified|1': ['认证学校', ''],
            'description': '@cparagraph(10,20)', //公司介绍
            'tags': function () {
              //随机选择3个标签
              let array = ['双一流', '985', '示范性院校', '教育部直属', '民办高校'];
              array.sort(function (a, b) {
                return Math.random() > 0.5 ? 1 : 0;
              }); //简单打乱方法
              let [a, b, c, ...rest] = array;
              return [a, b, c].join(',');
            },
          }],
      };
      let data = await Mock.mock(mockOption);

      //删除已有的数据
      await this.model('school').where(true).delete();
      //添加新的模拟数据
      let school_code = 12046;
      for (let item of data.data) {
        item.school_code = school_code++;
        await this.model('school').where({ "title": item.title }).thenAdd(item);
      }

      data = await this.model('school').select();
      return this.success(data);
    }
  }
};
